package com.weixing.mall.provider.model.vo.act;

import cn.hutool.core.date.DateUtil;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.weixing.mall.base.constant.DatePattern;
import com.weixing.mall.base.enums.WhetherEnum;
import com.weixing.mall.provider.api.model.enums.ActTypeEnum;
import com.weixing.mall.provider.model.enums.IsPublishEunm;
import com.weixing.mall.provider.model.enums.act.ActStatusEnum;
import com.weixing.mall.provider.model.enums.act.IsPublish;
import com.weixing.mall.provider.model.enums.act.SettleStatusEnum;
import com.weixing.mall.provider.model.enums.act.ShowClientEnum;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 活动详情
 *
 * @author  siashan
 * @date  2019/10/17 15:58
 * @since  1.0
 **/
@Data
public class ActivityVo {
    /**
     * ID
     */
    private Long id;

    /**
     * 活动名称
     */
    private String actName;

    /**
     * 活动图片
     */
    private String actImg;

    /**
     * 活动开始时间
     */
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = DatePattern.NORM_DATETIME_PATTERN)
    private Date startTime;

    /**
     * 活动结束时间
     */
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = DatePattern.NORM_DATETIME_PATTERN)
    private Date endTime;

    /**
     * 活动结束时间
     */
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = DatePattern.NORM_DATETIME_PATTERN)
    private Date createdTime;

    /**
     * 活动预热时间
     */
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = DatePattern.NORM_DATETIME_PATTERN)
    private Date preheatTime;

    /**
     * 活动类型 1代理商活动；2秒杀活动
     */
    private ActTypeEnum actType;

    /**
     * 是否发布，0未发布，1已经发布
     */
    private IsPublishEunm isPublish;


    /**
     * 展示客户端 1APP，2 H5，3全部
     */
    private ShowClientEnum showClient;

    /**
     * 下单范围 客服，客户，代理商
     */
    private String joinRole;

    /**
     * 活动折扣
     */
    private BigDecimal discount;

    /**
     * 活动状态 1未开始；2进行中；3已结束
     */
    private ActStatusEnum actStatus;

    /**
     * 活动匹配仓库 ERP仓，APP仓，外采仓
     */
    private String joinDepot;
    /**
     * 代理商折扣规则
     */
    private Long discountRule;

    /**
     * 返利规则
     */
    private Long rebateRule;

    /**
     * 活动分红比例
     */
    private BigDecimal bonusRate;


    /**
     * 结算状态
     */
    private SettleStatusEnum settleStatus;

    /**
     * 分区id
     */
    private  Long  partitionId;

    /**
     * 子分区名称
     */
    private  String subSiteName;

    /**
     * 是否每日活动
     */
    private WhetherEnum isDayAct;

    /**
     * 活动预览地址
     */
    private  String url;

    /**
     * ？？？
     */
    private boolean canPlace;

    /**
     * 活动编码
     */
    private  String  actCode;

    /**
     * 需收款折扣（只针对代理商活动有效）
     */
    private BigDecimal needReceiveRate;

    public boolean canPlace(){
        if (IsPublish.NOT_PUBLISH.equals(this.actStatus)){
            return false;
        }
        Date now = new Date();
        if (DateUtil.compare(now,this.getStartTime()) < 0 || DateUtil.compare(now,this.endTime ) > 0){
            return false;
        }
        return true;
    }

}
